Dashboard Temp Share Shortlinks Frames API

HTMLify

sliding window minimum.java
Views: 1 | Author: cody
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
// sliding window minimum java solution

import java.util.*;

class SlidingWindowMinimum {
	
	public ArrayList<Integer> getMinimums(ArrayList<Integer> nums, int k) {
		if (nums.size() == 0 || k <= 0) {
			return new ArrayList<>();
		}

		ArrayList<Integer> ans = new ArrayList<>();
		Deque<Integer> dq = new LinkedList<>();

		for (int i = 0; i < nums.size(); i++) {
			while (!dq.isEmpty() && dq.peek() < i - k + 1) {
				dq.poll();
			}

			while (!dq.isEmpty() && nums.get(dq.peekLast()) > nums.get(i)) {
				dq.pollLast();
			}

			dq.offer(i);

			if (i >= k - 1) {
				ans.add(nums.get(dq.peek()));
			}
		}
		return ans;
	}
}